home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 July / Macworld (1999-07).dmg / Shareware World / Comms & Internet / HTML and CSS modes / HTML and CSS Modes / html40.tcl < prev    next >
Text File  |  1999-04-24  |  35KB  |  838 lines

  1. ## -*-Tcl-*-
  2.  # ###################################################################
  3.  #  HTML mode - tools for editing HTML documents
  4.  # 
  5.  #  FILE: "html40.tcl"
  6.  #                                    created: 97-12-20 15.02.44 
  7.  #                                last update: 99-04-24 13.19.24 
  8.  #  Author: Johan Linde
  9.  #  E-mail: <jlinde@telia.com>
  10.  #     www: <http://www.theophys.kth.se/~jl/Alpha.html>
  11.  #  
  12.  # Version: 2.1.4
  13.  # 
  14.  # Copyright 1996-1999 by Johan Linde
  15.  #  
  16.  # This software may be used freely, and distributed freely, as long as the 
  17.  # receiver is not obligated in any way by receiving it.
  18.  #  
  19.  # If you make improvements to this file, please share them!
  20.  # 
  21.  # ###################################################################
  22.  ##
  23. proc html40.tcl {} {}
  24.  
  25. #
  26. # htmlElemAttrRequired: the per-element lists of all required attributes
  27. # htmlElemAttrOptional: the per-element lists of all optional attributes
  28. # htmlElemAttrChoices: element-specific attribute completions
  29. # htmlElemAttrNumber: the per-element list of attributes which are numbers.
  30. # htmlElemEventHandler: the per-element list of JavaScript's event handlers.
  31. # htmlElemAttrUsed: the per-element list of elements asked for in the status bar.
  32. # htmlElemExtension: Extension to HTML 4.
  33. # htmlDeprecated: Deprecated in HTML 4.
  34. #
  35. # htmlElemAttrOptional has to be defined for every element for everything
  36. # to work.
  37.  
  38. # A
  39. set htmlElemAttrOptional1(A)    {HREF= HREFLANG= NAME= TARGET= CHARSET= TYPE= SHAPE= COORDS=
  40. ACCESSKEY= TABINDEX= REL= REV= }
  41. set htmlElemAttrChoices1(A) {SHAPE=RECT SHAPE=CIRCLE SHAPE=POLY SHAPE=DEFAULT}
  42. set htmlElemAttrNumber1(A) {TABINDEX=1:32767:n}
  43. set htmlElemEventHandler1(A)    {onFocus= onBlur=}
  44. ensureset htmlElemAttrUsed(A) {HREF= NAME= TARGET=}
  45.  
  46. # ABBR
  47. set htmlElemAttrOptional1(ABBR) {}
  48.  
  49. # ACRONYM
  50. set htmlElemAttrOptional1(ACRONYM) {}
  51.  
  52. # ADDRESS
  53. set htmlElemAttrOptional1(ADDRESS) {}
  54.  
  55. # APPLET
  56. set htmlElemAttrRequired1(APPLET)    {WIDTH= HEIGHT=}
  57. set htmlElemAttrOptional1(APPLET)     {CODE= CODEBASE= ARCHIVE= OBJECT= HSPACE= VSPACE= ALIGN= NAME= ALT=
  58. MAYSCRIPT}
  59. set htmlElemAttrChoices1(APPLET)    {ALIGN=TOP ALIGN=MIDDLE ALIGN=BOTTOM 
  60. ALIGN=LEFT ALIGN=RIGHT}
  61. set htmlElemAttrNumber1(APPLET)     {VSPACE=0:i:n HSPACE=0:i:n WIDTH=1:i:%
  62. HEIGHT=1:i:%}
  63. ensureset htmlElemAttrUsed(APPLET)    {WIDTH= HEIGHT= CODE= CODEBASE= ALIGN= }
  64. set htmlElemExtension(APPLET) {MAYSCRIPT}
  65.  
  66. # AREA
  67. set htmlElemAttrRequired1(AREA) {ALT=}
  68. set htmlElemAttrOptional1(AREA)    {SHAPE= COORDS= TARGET= HREF= NOHREF ACCESSKEY= TABINDEX=}
  69. set htmlElemAttrChoices1(AREA)    {SHAPE=RECT SHAPE=CIRCLE SHAPE=POLY
  70. SHAPE=DEFAULT}
  71. set htmlElemAttrNumber1(AREA) {TABINDEX=1:32767:n}
  72. set htmlElemEventHandler1(AREA)    {onFocus= onBlur=}
  73. ensureset htmlElemAttrUsed(AREA)    {ALT= SHAPE= COORDS= TARGET= HREF= NOHREF}
  74.  
  75. # B
  76. set htmlElemAttrOptional1(B) {}
  77.  
  78. # BASE
  79. set htmlElemAttrOptional1(BASE)    {HREF= TARGET=}
  80. ensureset htmlElemAttrUsed(BASE)    {HREF= TARGET=}
  81.  
  82. # BASEFONT
  83. set htmlElemAttrRequired1(BASEFONT)    {SIZE=}
  84. set htmlElemAttrOptional1(BASEFONT) {COLOR= FACE= ID=}
  85. set htmlElemAttrNumber1(BASEFONT)    {SIZE=1:7:n}
  86. ensureset htmlElemAttrUsed(BASEFONT) {SIZE= COLOR= FACE=}
  87.  
  88. # BDO
  89. set htmlElemAttrRequired1(BDO) {DIR=}
  90. set htmlElemAttrOptional1(BDO) {LANG=}
  91. set htmlElemAttrChoices1(BDO) {DIR=LTR DIR=RTL}
  92. ensureset htmlElemAttrUsed(BDO) {DIR= LANG=}
  93.  
  94. # BIG
  95. set htmlElemAttrOptional1(BIG) {}
  96.  
  97. # BLOCKQUOTE
  98. set htmlElemAttrOptional1(BLOCKQUOTE) {CITE=}
  99.  
  100. # BODY
  101. set htmlElemAttrOptional1(BODY)    {BACKGROUND= BGPROPERTIES= BGCOLOR= TEXT= LINK= VLINK= ALINK=
  102. LEFTMARGIN= TOPMARGIN=}
  103. set htmlElemAttrChoices1(BODY) {BGPROPERTIES=FIXED}
  104. set htmlElemAttrNumber1(BODY) {LEFTMARGIN=0:i:n TOPMARGIN=0:i:n}
  105. set htmlElemEventHandler1(BODY)    {onLoad= onUnload=}
  106. set htmlElemExtension(BODY) {BGPROPERTIES= LEFTMARGIN= TOPMARGIN=}
  107. set htmlElemDeprecated(BODY) {BACKGROUND= BGCOLOR= TEXT= LINK= VLINK= ALINK=}
  108. ensureset htmlElemAttrUsed(BODY) {BACKGROUND= BGCOLOR= TEXT= LINK= VLINK=}
  109.  
  110. # BR
  111. set htmlElemAttrOptional1(BR)    {CLEAR=}
  112. set htmlElemAttrChoices1(BR)    {CLEAR=ALL CLEAR=LEFT CLEAR=RIGHT CLEAR=NONE}
  113. set htmlElemDeprecated(BR) {CLEAR=}
  114. ensureset htmlElemAttrUsed(BR) {CLEAR=}
  115.  
  116. # BUTTON
  117. set htmlElemAttrOptional1(BUTTON) {NAME= VALUE= TYPE= DISABLED ACCESSKEY= TABINDEX=}
  118. set htmlElemAttrChoices1(BUTTON) {TYPE=BUTTON TYPE=RESET TYPE=SUBMIT}
  119. set htmlElemAttrNumber1(BUTTON) {TABINDEX=0:32767:n}
  120. set htmlElemEventHandler1(BUTTON) {onFocus= onBlur=}
  121. ensureset htmlElemAttrUsed(BUTTON) {NAME= VALUE= TYPE= DISABLED}
  122.  
  123. # CAPTION
  124. set htmlElemAttrOptional1(CAPTION)    {ALIGN=}
  125. set htmlElemAttrChoices1(CAPTION)    {ALIGN=BOTTOM ALIGN=TOP ALIGN=LEFT ALIGN=RIGHT}
  126. set htmlElemDeprecated(CAPTION) {ALIGN=}
  127. ensureset htmlElemAttrUsed(CAPTION) {ALIGN=}
  128.  
  129. # CENTER
  130. set htmlElemAttrOptional1(CENTER) {}
  131.  
  132. # CITE
  133. set htmlElemAttrOptional1(CITE) {}
  134.  
  135. # CODE
  136. set htmlElemAttrOptional1(CODE) {}
  137.  
  138. # COL
  139. set htmlElemAttrOptional1(COL)    {SPAN= ALIGN= VALIGN= WIDTH= CHAR= CHAROFF=}
  140. set htmlElemAttrNumber1(COL)    {SPAN=1:i:n CHAROFF=0:i:%}
  141. set htmlElemAttrChoices1(COL) {ALIGN=LEFT ALIGN=CENTER ALIGN=RIGHT ALIGN=JUSTIFY ALIGN=CHAR
  142. VALIGN=BASELINE VALIGN=BOTTOM VALIGN=MIDDLE VALIGN=TOP}
  143. ensureset htmlElemAttrUsed(COL) {SPAN= ALIGN= VALIGN= WIDTH=}
  144.  
  145. # COLGROUP
  146. set htmlElemAttrOptional1(COLGROUP)    {SPAN= ALIGN= VALIGN= WIDTH= CHAR= CHAROFF=}
  147. set htmlElemAttrNumber1(COLGROUP)    {SPAN=1:i:n CHAROFF=0:i:%}
  148. set htmlElemAttrChoices1(COLGROUP) {ALIGN=LEFT ALIGN=CENTER ALIGN=RIGHT ALIGN=JUSTIFY ALIGN=CHAR
  149. VALIGN=BASELINE VALIGN=BOTTOM VALIGN=MIDDLE VALIGN=TOP}
  150. ensureset htmlElemAttrUsed(COLGROUP) {SPAN= ALIGN= VALIGN= WIDTH=}
  151.  
  152. # DD
  153. set htmlElemAttrOptional1(DD)    {}
  154.  
  155. # DEL
  156. set htmlElemAttrOptional1(DEL) {CITE= DATETIME=}
  157. ensureset htmlElemAttrUsed(DEL) {CITE= DATETIME=}
  158.  
  159. # DFN
  160. set htmlElemAttrOptional1(DFN) {}
  161.  
  162. # DIR
  163. set htmlElemAttrOptional1(DIR) {COMPACT}
  164.  
  165. # DIV
  166. set htmlElemAttrOptional1(DIV)    {ALIGN=}
  167. set htmlElemAttrChoices1(DIV)    {ALIGN=CENTER ALIGN=RIGHT ALIGN=LEFT ALIGN=JUSTIFY}
  168. set htmlElemDeprecated(DIV) {ALIGN=}
  169. ensureset htmlElemAttrUsed(DIV) {ALIGN=}
  170.  
  171. # DL
  172. set htmlElemAttrOptional1(DL) {COMPACT}
  173. set htmlElemDeprecated(DL) {COMPACT}
  174.  
  175. # DT
  176. set htmlElemAttrOptional1(DT) {}
  177.  
  178. # EM
  179. set htmlElemAttrOptional1(EM) {}
  180.  
  181. # FIELDSET
  182. set htmlElemAttrOptional1(FIELDSET) {}
  183.  
  184. # FONT
  185. set htmlElemAttrOptional1(FONT)    {SIZE= COLOR= FACE= POINT-SIZE=}
  186. set htmlElemAttrNumber1(FONT)    {SIZE=1:7:n POINT-SIZE=1:i:n}
  187. set htmlElemExtension(FONT) {POINT-SIZE=}
  188. ensureset htmlElemAttrUsed(FONT)    {SIZE= COLOR= FACE=}
  189.  
  190. # FORM
  191. set htmlElemAttrRequired1(FORM) {ACTION=}
  192. set htmlElemAttrOptional1(FORM)    {METHOD= ENCTYPE= TARGET= ACCEPT-CHARSET= ACCEPT= NAME=}
  193. set htmlElemAttrChoices1(FORM)    {METHOD=POST METHOD=GET}
  194. set htmlElemEventHandler1(FORM)    {onReset= onSubmit=}
  195. set htmlElemExtension(FORM) {NAME=}
  196. ensureset htmlElemAttrUsed(FORM) {ACTION= METHOD= }
  197.  
  198. # FRAME
  199. set htmlElemAttrOptional1(FRAME)    {SRC= NAME= MARGINWIDTH= MARGINHEIGHT= SCROLLING=
  200. NORESIZE FRAMEBORDER= LONGDESC= BORDERCOLOR=}
  201. set htmlElemAttrChoices1(FRAME)    {SCROLLING=YES SCROLLING=NO SCROLLING=AUTO 
  202. FRAMEBORDER=1 FRAMEBORDER=0}
  203. set htmlElemAttrNumber1(FRAME)    {MARGINWIDTH=0:i:n MARGINHEIGHT=0:i:n}
  204. set htmlElemExtension(FRAME) {BORDERCOLOR=}
  205. ensureset htmlElemAttrUsed(FRAME)    {SRC= NAME= MARGINWIDTH= MARGINHEIGHT= SCROLLING=
  206. NORESIZE FRAMEBORDER=}
  207.  
  208. # FRAMESET
  209. set htmlElemAttrOptional1(FRAMESET) {ROWS= COLS= FRAMEBORDER= BORDER= BORDERCOLOR= FRAMESPACING=}
  210. set htmlElemAttrNumber1(FRAMESET)    {BORDER=0:i:n FRAMESPACING=0:i:n}
  211. set htmlElemAttrChoices1(FRAMESET)    {FRAMEBORDER=1 FRAMEBORDER=0}
  212. set htmlElemEventHandler1(FRAMESET)    {onLoad= onUnload=}
  213. set htmlElemExtension(FRAMESET) {FRAMEBORDER= BORDER= BORDERCOLOR= FRAMESPACING=}
  214. ensureset htmlElemAttrUsed(FRAMESET) {ROWS= COLS=}
  215.  
  216. # H1
  217. set htmlElemAttrOptional1(H1)    {ALIGN= }
  218. set htmlElemAttrChoices1(H1)    {ALIGN=CENTER ALIGN=RIGHT ALIGN=LEFT ALIGN=JUSTIFY}
  219. set htmlElemDeprecated(H1)        {ALIGN=}
  220. ensureset htmlElemAttrUsed(H1)    {ALIGN=}
  221.  
  222. # H2
  223. set htmlElemAttrOptional1(H2)    {ALIGN= }
  224. set htmlElemAttrChoices1(H2)    {ALIGN=CENTER ALIGN=RIGHT ALIGN=LEFT ALIGN=JUSTIFY}
  225. set htmlElemDeprecated(H2)        {ALIGN=}
  226. ensureset htmlElemAttrUsed(H2)    {ALIGN=}
  227.  
  228. # H3
  229. set htmlElemAttrOptional1(H3)    {ALIGN= }
  230. set htmlElemAttrChoices1(H3)    {ALIGN=CENTER ALIGN=RIGHT ALIGN=LEFT ALIGN=JUSTIFY}
  231. set htmlElemDeprecated(H3)        {ALIGN=}
  232. ensureset htmlElemAttrUsed(H3)    {ALIGN=}
  233.  
  234. # H4
  235. set htmlElemAttrOptional1(H4)    {ALIGN= }
  236. set htmlElemAttrChoices1(H4)    {ALIGN=CENTER ALIGN=RIGHT ALIGN=LEFT ALIGN=JUSTIFY}
  237. set htmlElemDeprecated(H4)        {ALIGN=}
  238. ensureset htmlElemAttrUsed(H4)    {ALIGN=}
  239.  
  240. # H5
  241. set htmlElemAttrOptional1(H5)    {ALIGN= }
  242. set htmlElemAttrChoices1(H5)    {ALIGN=CENTER ALIGN=RIGHT ALIGN=LEFT ALIGN=JUSTIFY}
  243. set htmlElemDeprecated(H5)        {ALIGN=}
  244. ensureset htmlElemAttrUsed(H5)    {ALIGN=}
  245.  
  246. # H6
  247. set htmlElemAttrOptional1(H6)    {ALIGN= }
  248. set htmlElemAttrChoices1(H6)    {ALIGN=CENTER ALIGN=RIGHT ALIGN=LEFT ALIGN=JUSTIFY}
  249. set htmlElemDeprecated(H6)        {ALIGN=}
  250. ensureset htmlElemAttrUsed(H6)    {ALIGN=}
  251.  
  252. # HEAD
  253. set htmlElemAttrOptional1(HEAD) {PROFILE=}
  254.  
  255. # HR
  256. set htmlElemAttrOptional1(HR)    {ALIGN= SIZE= WIDTH= COLOR= NOSHADE}
  257. set htmlElemAttrChoices1(HR)    {ALIGN=LEFT ALIGN=RIGHT ALIGN=CENTER}
  258. set htmlElemAttrNumber1(HR)     {SIZE=1:i:n WIDTH=1:i:%}
  259. set htmlElemExtension(HR)    {COLOR=}
  260. set htmlElemDeprecated(HR)    {ALIGN= SIZE= WIDTH= NOSHADE}
  261.  
  262. # HTML
  263. set htmlElemAttrOptional1(HTML) {}
  264.  
  265. # I
  266. set htmlElemAttrOptional1(I) {}
  267.  
  268. # IFRAME
  269. set htmlElemAttrOptional1(IFRAME) {SRC= NAME= WIDTH= HEIGHT= MARGINWIDTH= MARGINHEIGHT= SCROLLING=
  270. ALIGN= FRAMEBORDER= LONGDESC=}
  271. set htmlElemAttrNumber1(IFRAME)    {WIDTH=1:i:% HEIGHT=1:i:% MARGINWIDTH=1:i:n MARGINHEIGHT=1:i:n}
  272. set htmlElemAttrChoices1(IFRAME) {SCROLLING=YES SCROLLING=NO SCROLLING=AUTO ALIGN=TOP 
  273. ALIGN=MIDDLE ALIGN=BOTTOM ALIGN=LEFT ALIGN=RIGHT FRAMEBORDER=1 FRAMEBORDER=0}
  274. set htmlElemDeprecated(IFRAME)    {ALIGN=}
  275. ensureset htmlElemAttrUsed(IFRAME) {SRC= NAME= WIDTH= HEIGHT= MARGINWIDTH= MARGINHEIGHT= SCROLLING= ALIGN=}
  276.  
  277. # IMG
  278. set htmlElemAttrRequired1(IMG)    {SRC= ALT=}
  279. set htmlElemAttrOptional1(IMG)    {LOWSRC= WIDTH= HEIGHT=  BORDER= 
  280. ALIGN= HSPACE= VSPACE= USEMAP= ISMAP LONGDESC= DYNSRC= LOOP= START= CONTROLS}
  281. set htmlElemAttrChoices1(IMG)    {ALIGN=TOP ALIGN=MIDDLE ALIGN=BOTTOM 
  282. ALIGN=LEFT ALIGN=RIGHT START=FILEOPEN START=MOUSEOVER}
  283. set htmlElemAttrNumber1(IMG) {BORDER=0:i:% WIDTH=1:i:% HEIGHT=1:i:%
  284. HSPACE=0:i:n VSPACE=0:i:n LOOP=-1:i:n}
  285. set htmlElemEventHandler1(IMG)    {onAbort= onError= onLoad=}
  286. set htmlElemExtension(IMG) {LOWSRC= CONTROLS DYNSRC= LOOP= START= onAbort= onError= onLoad=}
  287. set htmlElemDeprecated(IMG) {ALIGN= BORDER= HSPACE= VSPACE=}
  288. ensureset htmlElemAttrUsed(IMG)    {SRC= ALT= WIDTH= HEIGHT= BORDER= ALIGN= HSPACE= VSPACE=}
  289.  
  290. # INPUT=TEXT
  291. set htmlElemAttrOptional1([list INPUT TYPE=TEXT])    {NAME= VALUE= SIZE= MAXLENGTH= DISABLED READONLY ACCESSKEY= TABINDEX=}
  292. set htmlElemAttrNumber1([list INPUT TYPE=TEXT])    {SIZE=1:i:n MAXLENGTH=1:i:n TABINDEX=0:32767:n}
  293. set htmlElemEventHandler1([list INPUT TYPE=TEXT])    {onFocus= onBlur= onChange= onSelect=}
  294. ensureset htmlElemAttrUsed([list INPUT TYPE=TEXT])    {NAME= VALUE= SIZE= MAXLENGTH=}
  295.  
  296. # INPUT=CHECKBOX
  297. set htmlElemAttrRequired1([list INPUT TYPE=CHECKBOX])    {VALUE=}
  298. set htmlElemAttrOptional1([list INPUT TYPE=CHECKBOX])    {NAME= CHECKED DISABLED ACCESSKEY= TABINDEX=}
  299. set htmlElemAttrNumber1([list INPUT TYPE=CHECKBOX]) {TABINDEX=0:32767:n}
  300. ensureset htmlElemAttrUsed([list INPUT TYPE=CHECKBOX])    {NAME= VALUE= CHECKED}
  301.  
  302. # INPUT=BUTTON
  303. set htmlElemAttrOptional1([list INPUT TYPE=BUTTON])    {NAME= VALUE= DISABLED ACCESSKEY= TABINDEX=}
  304. set htmlElemAttrNumber1([list INPUT TYPE=BUTTON]) {TABINDEX=0:32767:n}
  305. ensureset htmlElemAttrUsed([list INPUT TYPE=BUTTON])    {NAME= VALUE=}
  306.  
  307. # INPUT=RADIO
  308. set htmlElemAttrRequired1([list INPUT TYPE=RADIO])    {VALUE=}
  309. set htmlElemAttrOptional1([list INPUT TYPE=RADIO])    {NAME= CHECKED DISABLED ACCESSKEY= TABINDEX=}
  310. set htmlElemAttrNumber1([list INPUT TYPE=RADIO]) {TABINDEX=0:32767:n}
  311. ensureset htmlElemAttrUsed([list INPUT TYPE=RADIO])    {NAME= VALUE= CHECKED}
  312.  
  313. # INPUT=SUBMIT
  314. set htmlElemAttrOptional1([list INPUT TYPE=SUBMIT])    {NAME= VALUE= DISABLED ACCESSKEY= TABINDEX=}
  315. set htmlElemAttrNumber1([list INPUT TYPE=SUBMIT]) {TABINDEX=0:32767:n}
  316. ensureset htmlElemAttrUsed([list INPUT TYPE=SUBMIT])    {NAME= VALUE=}
  317.  
  318. # INPUT=RESET
  319. set htmlElemAttrOptional1([list INPUT TYPE=RESET])    {VALUE= DISABLED ACCESSKEY= TABINDEX=}
  320. set htmlElemAttrNumber1([list INPUT TYPE=RESET]) {TABINDEX=0:32767:n}
  321. ensureset htmlElemAttrUsed([list INPUT TYPE=RESET])    {VALUE=}
  322.  
  323. # INPUT=PASSWORD
  324. set htmlElemAttrOptional1([list INPUT TYPE=PASSWORD])    {NAME= VALUE= SIZE= MAXLENGTH= DISABLED READONLY ACCESSKEY= TABINDEX=}
  325. set htmlElemAttrNumber1([list INPUT TYPE=PASSWORD])    {SIZE=1:i:n MAXLENGTH=1:i:n TABINDEX=0:32767:n}
  326. set htmlElemEventHandler1([list INPUT TYPE=PASSWORD])    {onFocus= onBlur= onChange= onSelect=}
  327. ensureset htmlElemAttrUsed([list INPUT TYPE=PASSWORD])    {NAME= VALUE= SIZE= MAXLENGTH=}
  328.  
  329. # INPUT=HIDDEN
  330. set htmlElemAttrOptional1([list INPUT TYPE=HIDDEN])    {NAME= VALUE=}
  331. ensureset htmlElemAttrUsed([list INPUT TYPE=HIDDEN])    {NAME= VALUE=}
  332.  
  333. # INPUT=IMAGE
  334. set htmlElemAttrRequired1([list INPUT TYPE=IMAGE])    {SRC=}
  335. set htmlElemAttrOptional1([list INPUT TYPE=IMAGE])    {NAME= ALIGN= ALT= USEMAP= DISABLED ACCESSKEY= TABINDEX=}
  336. set htmlElemAttrChoices1([list INPUT TYPE=IMAGE])    {ALIGN=TOP ALIGN=MIDDLE ALIGN=BOTTOM 
  337. ALIGN=LEFT ALIGN=RIGHT}
  338. set htmlElemAttrNumber1([list INPUT TYPE=IMAGE]) {TABINDEX=0:32767:n}
  339. set htmlElemDeprecated([list INPUT TYPE=IMAGE]) {ALIGN=}
  340. ensureset htmlElemAttrUsed([list INPUT TYPE=IMAGE])    {SRC= NAME= ALT=}
  341.  
  342. # INPUT=FILE
  343. set htmlElemAttrOptional1([list INPUT TYPE=FILE])    {NAME= SIZE= MAXLENGTH= ACCEPT= DISABLED ACCESSKEY= TABINDEX=}
  344. set htmlElemAttrNumber1([list INPUT TYPE=FILE])    {SIZE=1:i:n MAXLENGTH=1:i:n TABINDEX=0:32767:n}
  345. ensureset htmlElemAttrUsed([list INPUT TYPE=FILE]) {NAME= SIZE= MAXLENGTH=}
  346.  
  347. # INS
  348. set htmlElemAttrOptional1(INS) {CITE= DATETIME=}
  349. ensureset htmlElemAttrUsed(INS) {CITE= DATETIME=}
  350.  
  351. # ISINDEX
  352. set htmlElemAttrOptional1(ISINDEX)    {ACTION= PROMPT=}
  353. set htmlElemExtension(ISINDEX) {ACTION=}
  354.  
  355. # KBD
  356. set htmlElemAttrOptional1(KBD) {}
  357.  
  358. # LABEL
  359. set htmlElemAttrOptional1(LABEL) {FOR= ACCESSKEY=}
  360. set htmlElemEventHandler1(LABEL) {onFocus= onBlur=}
  361. ensureset htmlElemAttrUsed(LABEL) {FOR= ACCESSKEY=}
  362.  
  363. # LEGEND
  364. set htmlElemAttrOptional1(LEGEND) {ALIGN= ACCESSKEY=}
  365. set htmlElemAttrChoices1(LEGEND) {ALIGN=TOP ALIGN=BOTTOM ALIGN=LEFT ALIGN=RIGHT}
  366. set htmlElemDeprecated(LEGEND) {ALIGN=}
  367. ensureset htmlElemAttrUsed(LEGEND) {ALIGN= ACCESSKEY=}
  368.  
  369. # LI
  370. set htmlElemAttrOptional1([list LI IN UL])    {TYPE=}
  371. set htmlElemAttrChoices1([list LI IN UL])    {TYPE=DISC TYPE=CIRCLE TYPE=SQUARE}
  372. set htmlElemDeprecated([list LI IN UL])        {TYPE=}
  373. ensureset htmlElemAttrUsed([list LI IN UL]) {TYPE=}
  374. set htmlElemAttrOptional1([list LI IN OL])    {TYPE= VALUE=}
  375. set htmlElemAttrNumber1([list LI IN OL])    {VALUE=1:i:n}
  376. set htmlElemAttrChoices1([list LI IN OL])    {TYPE=A TYPE=a TYPE=I TYPE=i TYPE=1}
  377. set htmlElemDeprecated([list LI IN OL])        {TYPE= VALUE=}
  378. ensureset htmlElemAttrUsed([list LI IN OL]) {TYPE= VALUE=}
  379. set htmlElemAttrOptional1(LI) {}
  380.  
  381. # LINK
  382. set htmlElemAttrOptional1(LINK)    {HREF= HREFLANG= TARGET= CHARSET= REL= REV= TYPE= MEDIA=}
  383. ensureset htmlElemAttrUsed(LINK) {HREF= REL= TYPE=}
  384.  
  385. # MAP
  386. set htmlElemAttrRequired1(MAP)        {NAME=}
  387. set htmlElemAttrOptional1(MAP)        {}
  388.  
  389. # MENU
  390. set htmlElemAttrOptional1(MENU) {COMPACT}
  391.  
  392. # META
  393. set htmlElemAttrRequired1(META)    {CONTENT=}
  394. set htmlElemAttrOptional1(META)    {NAME= HTTP-EQUIV= SCHEME=}
  395. ensureset htmlElemAttrUsed(META) {CONTENT= NAME= HTTP-EQUIV=}
  396.  
  397. # NOFRAMES
  398. set htmlElemAttrOptional1(NOFRAMES) {}
  399.  
  400. # NOSCRIPT
  401. set htmlElemAttrOptional1(NOSCRIPT) {}
  402.  
  403. # OBJECT
  404. set htmlElemAttrOptional1(OBJECT) {CLASSID= CODEBASE= CODETYPE= ARCHIVE= DATA= NAME= TYPE= STANDBY=
  405. ALIGN= BORDER= WIDTH= HEIGHT= HSPACE= VSPACE= USEMAP= DECLARE TABINDEX=}
  406. set htmlElemAttrNumber1(OBJECT) {WIDTH=1:i:% HEIGHT=1:i:% HSPACE=0:i:n VSPACE=0:i:n BORDER=0:i:%
  407. TABINDEX=0:32767:n}
  408. set htmlElemAttrChoices1(OBJECT) {ALIGN=TOP ALIGN=MIDDLE ALIGN=BOTTOM 
  409. ALIGN=LEFT ALIGN=RIGHT}
  410. set htmlElemDeprecated(OBJECT) {ALIGN= BORDER= HSPACE= VSPACE=}
  411. ensureset htmlElemAttrUsed(OBJECT) {CLASSID= CODETYPE= ARCHIVE= DATA= NAME= TYPE= WIDTH= HEIGHT= STANDBY=}
  412.  
  413. # OL
  414. set htmlElemAttrOptional1(OL)    {TYPE= START= COMPACT}
  415. set htmlElemAttrChoices1(OL)    {TYPE=A TYPE=a TYPE=I TYPE=i TYPE=1}
  416. set htmlElemAttrNumber1(OL)    {START=1:i:n}
  417. set htmlElemDeprecated(OL)    {TYPE= START= COMPACT}
  418. ensureset htmlElemAttrUsed(OL) {TYPE= START=}
  419.  
  420. # OPTGROUP
  421. set htmlElemAttrRequired1(OPTGROUP) {LABEL=}
  422. set htmlElemAttrOptional1(OPTGROUP) {DISABLED}
  423. ensureset htmlElemAttrUsed(OPTGROUP) {LABEL= DISABLED}
  424.  
  425. # OPTION
  426. set htmlElemAttrOptional1(OPTION)    {VALUE= LABEL= SELECTED DISABLED}
  427. ensureset htmlElemAttrUsed(OPTION)    {VALUE= SELECTED}
  428.  
  429. # P
  430. set htmlElemAttrOptional1(P)    {ALIGN= }
  431. set htmlElemAttrChoices1(P)        {ALIGN=CENTER ALIGN=RIGHT ALIGN=LEFT ALIGN=JUSTIFY}
  432. set htmlElemDeprecated(P)        {ALIGN=}
  433. ensureset htmlElemAttrUsed(P)    {ALIGN=}
  434.  
  435. # PARAM
  436. set htmlElemAttrRequired1(PARAM)    {NAME=}
  437. set htmlElemAttrOptional1(PARAM)    {VALUE= TYPE= VALUETYPE= ID=}
  438. set htmlElemAttrChoices1(PARAM) {VALUETYPE=REF VALUETYPE=OBJECT VALUETYPE=DATA}
  439. ensureset htmlElemAttrUsed(PARAM) {NAME= VALUE=}
  440.  
  441. # PRE
  442. set htmlElemAttrOptional1(PRE)    {WIDTH=}
  443. set htmlElemDeprecated(PRE)    {WIDTH=}
  444. set htmlElemAttrNumber1(PRE)     {WIDTH=1:i:n}
  445.  
  446. # Q
  447. set htmlElemAttrOptional1(Q) {CITE=}
  448.  
  449. # S
  450. set htmlElemAttrOptional1(S) {}
  451.  
  452. # SAMP
  453. set htmlElemAttrOptional1(SAMP) {}
  454.  
  455. # SCRIPT
  456. set htmlElemAttrRequired1(SCRIPT) {TYPE=}
  457. set htmlElemAttrOptional1(SCRIPT)    {LANGUAGE= SRC= ARCHIVE= DEFER CHARSET=}
  458. set htmlElemExtension(SCRIPT) {ARCHIVE=}
  459. set htmlElemDeprecated(SCRIPT)    {LANGUAGE=}
  460. ensureset htmlElemAttrUsed(SCRIPT)    {TYPE= LANGUAGE= SRC=}
  461.  
  462. # SELECT
  463. set htmlElemAttrOptional1(SELECT)    {NAME= SIZE= TABINDEX= MULTIPLE DISABLED}
  464. set htmlElemAttrNumber1(SELECT)    {SIZE=1:i:n TABINDEX=0:32767:n}
  465. set htmlElemEventHandler1(SELECT)    {onFocus= onBlur= onChange=}
  466. ensureset htmlElemAttrUsed(SELECT)    {NAME= SIZE= MULTIPLE}
  467.  
  468. # SMALL
  469. set htmlElemAttrOptional1(SMALL) {}
  470.  
  471. # SPAN
  472. set htmlElemAttrOptional1(SPAN) {}
  473.  
  474. # STRIKE
  475. set htmlElemAttrOptional1(STRIKE) {}
  476.  
  477. # STRONG
  478. set htmlElemAttrOptional1(STRONG) {}
  479.  
  480. # STYLE
  481. set htmlElemAttrRequired1(STYLE) {TYPE=}
  482. set htmlElemAttrOptional1(STYLE) {MEDIA= TITLE=}
  483. ensureset htmlElemAttrUsed(STYLE) {TYPE=}
  484.  
  485. # SUB
  486. set htmlElemAttrOptional1(SUB) {}
  487.  
  488. # SUP
  489. set htmlElemAttrOptional1(SUP) {}
  490.  
  491. # TABLE
  492. set htmlElemAttrOptional1(TABLE)    {BORDER= CELLSPACING= CELLPADDING= COLS= WIDTH= HEIGHT=
  493. ALIGN= FRAME= RULES= SUMMARY= BGCOLOR= BORDERCOLOR= BORDERCOLORDARK= BORDERCOLORLIGHT= BACKGROUND=}
  494. set htmlElemAttrChoices1(TABLE)    {ALIGN=LEFT ALIGN=CENTER ALIGN=RIGHT FRAME=BORDER
  495. FRAME=VOID FRAME=ABOVE FRAME=BELOW FRAME=HSIDES FRAME=VSIDES FRAME=LHS FRAME=RHS FRAME=BOX
  496. RULES=GROUPS RULES=ROWS RULES=COLS RULES=ALL RULES=NONE}
  497. set htmlElemAttrNumber1(TABLE)    {BORDER=0:i:n CELLSPACING=0:i:% COLS=1:i:n
  498. CELLPADDING=0:i:% WIDTH=1:i:% HEIGHT=1:i:%}
  499. set htmlElemExtension(TABLE) {COLS= HEIGHT= BORDERCOLOR= BORDERCOLORDARK= BORDERCOLORLIGHT= BACKGROUND=}
  500. set htmlElemDeprecated(TABLE) {ALIGN= BGCOLOR=}
  501. ensureset htmlElemAttrUsed(TABLE)    {BORDER= CELLSPACING= CELLPADDING=}
  502.  
  503. # TBODY
  504. set htmlElemAttrOptional1(TBODY) {ALIGN= VALIGN= CHAR= CHAROFF=}
  505. set htmlElemAttrNumber1(TBODY) {CHAROFF=0:i:%}
  506. set htmlElemAttrChoices1(TBODY) {ALIGN=LEFT ALIGN=CENTER ALIGN=RIGHT ALIGN=JUSTIFY ALIGN=CHAR
  507. VALIGN=BASELINE VALIGN=BOTTOM VALIGN=MIDDLE VALIGN=TOP}
  508. ensureset htmlElemAttrUsed(TBODY) {ALIGN= VALIGN=}
  509.  
  510. # TEXTAREA
  511. set htmlElemAttrRequired1(TEXTAREA)    {ROWS= COLS=}
  512. set htmlElemAttrOptional1(TEXTAREA)    {NAME= WRAP= ACCESSKEY= TABINDEX= DISABLED READONLY}
  513. set htmlElemAttrNumber1(TEXTAREA)    {ROWS=1:i:n COLS=1:i:n TABINDEX=0:32767:n}
  514. set htmlElemAttrChoices1(TEXTAREA) {WRAP=VIRTUAL WRAP=PHYSICAL WRAP=OFF}
  515. set htmlElemEventHandler1(TEXTAREA)    {onFocus= onBlur= onChange= onSelect=}
  516. set htmlElemExtension(TEXTAREA) {WRAP=}
  517. ensureset htmlElemAttrUsed(TEXTAREA) {ROWS= COLS= NAME=}
  518.  
  519. # TD
  520. set htmlElemAttrOptional1(TD)    {ALIGN= VALIGN= CHAR= CHAROFF= COLSPAN= ROWSPAN= WIDTH= HEIGHT=
  521. NOWRAP ABBR= AXIS= HEADERS= SCOPE= BGCOLOR= BORDERCOLOR= BORDERCOLORDARK= 
  522. BORDERCOLORLIGHT= BACKGROUND=}
  523. set htmlElemAttrChoices1(TD)    {ALIGN=CENTER ALIGN=RIGHT ALIGN=LEFT ALIGN=JUSTIFY ALIGN=CHAR
  524. VALIGN=BASELINE VALIGN=BOTTOM VALIGN=MIDDLE VALIGN=TOP SCOPE=ROW SCOPE=COL SCOPE=ROWGROUP
  525. SCOPE=COLGROUP}
  526. set htmlElemAttrNumber1(TD)    {CHAROFF=0:i:% COLSPAN=0:i:n ROWSPAN=0:i:n WIDTH=1:i:n HEIGHT=1:i:n}
  527. set htmlElemExtension(TD) {BORDERCOLOR= BORDERCOLORDARK= BORDERCOLORLIGHT= BACKGROUND=}
  528. set htmlElemDeprecated(TD) {NOWRAP BGCOLOR= WIDTH= HEIGHT=}
  529. ensureset htmlElemAttrUsed(TD)    {ALIGN= VALIGN= COLSPAN= ROWSPAN= WIDTH= NOWRAP}
  530.  
  531. # TFOOT
  532. set htmlElemAttrOptional1(TFOOT) {ALIGN= VALIGN= CHAR= CHAROFF=}
  533. set htmlElemAttrNumber1(TFOOT) {CHAROFF=0:i:%}
  534. set htmlElemAttrChoices1(TFOOT) {ALIGN=LEFT ALIGN=CENTER ALIGN=RIGHT ALIGN=JUSTIFY ALIGN=CHAR
  535. VALIGN=BASELINE VALIGN=BOTTOM VALIGN=MIDDLE VALIGN=TOP}
  536. ensureset htmlElemAttrUsed(TFOOT) {ALIGN= VALIGN=}
  537.  
  538. # TH
  539. set htmlElemAttrOptional1(TH)    {ALIGN= VALIGN= CHAR= CHAROFF= COLSPAN= ROWSPAN= WIDTH= HEIGHT=
  540. NOWRAP ABBR= AXIS= HEADERS= SCOPE= BGCOLOR= BORDERCOLOR= BORDERCOLORDARK= 
  541. BORDERCOLORLIGHT= BACKGROUND=}
  542. set htmlElemAttrChoices1(TH)    {ALIGN=CENTER ALIGN=RIGHT ALIGN=LEFT ALIGN=JUSTIFY ALIGN=CHAR
  543. VALIGN=BASELINE VALIGN=BOTTOM VALIGN=MIDDLE VALIGN=TOP SCOPE=ROW SCOPE=COL SCOPE=ROWGROUP
  544. SCOPE=COLGROUP}
  545. set htmlElemAttrNumber1(TH)    {CHAROFF=0:i:% COLSPAN=0:i:n ROWSPAN=0:i:n WIDTH=1:i:n HEIGHT=1:i:n}
  546. set htmlElemExtension(TH) {BORDERCOLOR= BORDERCOLORDARK= BORDERCOLORLIGHT= BACKGROUND=}
  547. set htmlElemDeprecated(TH) {NOWRAP BGCOLOR= WIDTH= HEIGHT=}
  548. ensureset htmlElemAttrUsed(TH)    {ALIGN= VALIGN= COLSPAN= ROWSPAN= WIDTH= NOWRAP}
  549.  
  550. # THEAD
  551. set htmlElemAttrOptional1(THEAD) {ALIGN= VALIGN= CHAR= CHAROFF=}
  552. set htmlElemAttrNumber1(THEAD) {CHAROFF=0:i:%}
  553. set htmlElemAttrChoices1(THEAD) {ALIGN=LEFT ALIGN=CENTER ALIGN=RIGHT ALIGN=JUSTIFY ALIGN=CHAR
  554. VALIGN=BASELINE VALIGN=BOTTOM VALIGN=MIDDLE VALIGN=TOP}
  555. ensureset htmlElemAttrUsed(THEAD) {ALIGN= VALIGN=}
  556.  
  557. # TITLE
  558. set htmlElemAttrOptional1(TITLE) {}
  559.  
  560. # TR
  561. set htmlElemAttrOptional1(TR)    {ALIGN= VALIGN= CHAR= CHAROFF= BGCOLOR= BORDERCOLOR= BORDERCOLORDARK=
  562. BORDERCOLORLIGHT= BACKGROUND=}
  563. set htmlElemAttrChoices1(TR)    {ALIGN=CENTER ALIGN=RIGHT ALIGN=LEFT  
  564. VALIGN=BASELINE VALIGN=BOTTOM VALIGN=MIDDLE VALIGN=TOP }
  565. set htmlElemAttrNumber1(TR) {CHAROFF=0:i:%}
  566. set htmlElemExtension(TR) {BORDERCOLOR= BORDERCOLORDARK= BORDERCOLORLIGHT= BACKGROUND=}
  567. set htmlElemDeprecated(TR) {BGCOLOR=}
  568. ensureset htmlElemAttrUsed(TR)    {ALIGN= VALIGN=}
  569.  
  570. # TT
  571. set htmlElemAttrOptional1(TT) {}
  572.  
  573. # U
  574. set htmlElemAttrOptional1(U) {}
  575.  
  576. # UL
  577. set htmlElemAttrOptional1(UL)    {TYPE= COMPACT}
  578. set htmlElemAttrChoices1(UL)    {TYPE=DISC TYPE=CIRCLE TYPE=SQUARE}
  579. set htmlElemDeprecated(UL)    {TYPE= COMPACT}
  580. ensureset htmlElemAttrUsed(UL) {TYPE=}
  581.  
  582. # VAR
  583. set htmlElemAttrOptional1(VAR) {}
  584.  
  585. #===============================================================================
  586. # Extensions
  587. #===============================================================================
  588.  
  589. # BGSOUND
  590. set htmlElemAttrRequired1(BGSOUND) {SRC=}
  591. set htmlElemAttrOptional1(BGSOUND) {LOOP=}
  592. set htmlElemAttrNumber1(BGSOUND) {LOOP=-1:i:n}
  593. ensureset htmlElemAttrUsed(BGSOUND) {SRC= LOOP=}
  594.  
  595. # BLINK
  596. set htmlElemAttrOptional1(BLINK) {}
  597.  
  598. # EMBED
  599. set htmlElemAttrRequired1(EMBED)    {SRC= WIDTH= HEIGHT=}
  600. set htmlElemAttrOptional1(EMBED)    {HSPACE= VSPACE= ALIGN=}
  601. set htmlElemAttrNumber1(EMBED) {WIDTH=1:i:n HEIGHT=1:i:n HSPACE=1:i:n VSPACE=1:i:n}
  602. set htmlElemAttrChoices1(EMBED)    {ALIGN=TOP ALIGN=MIDDLE ALIGN=BOTTOM 
  603. ALIGN=LEFT ALIGN=RIGHT}
  604.  
  605. set htmlElemAttrRequired1(LIVEAUDIO) {SRC= WIDTH= HEIGHT=}
  606. set htmlElemAttrOptional1(LIVEAUDIO)    {HSPACE= VSPACE= ALIGN= AUTOSTART= LOOP=}
  607. set htmlElemAttrNumber1(LIVEAUDIO) {WIDTH=1:i:n HEIGHT=1:i:n HSPACE=1:i:n VSPACE=1:i:n}
  608. set htmlElemAttrChoices1(LIVEAUDIO)    {ALIGN=TOP ALIGN=MIDDLE ALIGN=BOTTOM 
  609. ALIGN=LEFT ALIGN=RIGHT
  610. AUTOSTART=TRUE AUTOSTART=FALSE LOOP=TRUE LOOP=FALSE}
  611. ensureset htmlElemAttrUsed(LIVEAUDIO) {SRC= WIDTH= HEIGHT= AUTOSTART= LOOP=}
  612.  
  613. set htmlElemAttrRequired1(LIVEVIDEO) {SRC= WIDTH= HEIGHT=}
  614. set htmlElemAttrOptional1(LIVEVIDEO)    {HSPACE= VSPACE= ALIGN= AUTOSTART= LOOP= CONTROLS=}
  615. set htmlElemAttrNumber1(LIVEVIDEO) {WIDTH=1:i:n HEIGHT=1:i:n HSPACE=1:i:n VSPACE=1:i:n}
  616. set htmlElemAttrChoices1(LIVEVIDEO)    {ALIGN=TOP ALIGN=MIDDLE ALIGN=BOTTOM 
  617. ALIGN=LEFT ALIGN=RIGHT
  618. AUTOSTART=TRUE AUTOSTART=FALSE LOOP=TRUE LOOP=FALSE CONTROLS=TRUE CONTROLS=FALSE}
  619. ensureset htmlElemAttrUsed(LIVEVIDEO) {SRC= WIDTH= HEIGHT= AUTOSTART= LOOP= CONTROLS=}
  620.  
  621. set htmlElemAttrRequired1([list QUICKTIME MOVIE])    {SRC= }
  622. set htmlElemAttrOptional1([list QUICKTIME MOVIE])    {WIDTH= HEIGHT= HSPACE= VSPACE= ALIGN=
  623. HIDDEN= AUTOPLAY= CONTROLLER= LOOP= PLAYEVERYFRAME= HREF= TARGET= PLUGINSPAGE=}
  624. set htmlElemAttrNumber1([list QUICKTIME MOVIE]) {WIDTH=1:i:n HEIGHT=1:i:n HSPACE=1:i:n VSPACE=1:i:n}
  625. set htmlElemAttrChoices1([list QUICKTIME MOVIE])    {ALIGN=TOP ALIGN=MIDDLE ALIGN=BOTTOM 
  626. ALIGN=LEFT ALIGN=RIGHT HIDDEN=TRUE HIDDEN=FALSE
  627. AUTOPLAY=TRUE AUTOPLAY=FALSE CONTROLLER=TRUE CONTROLLER=FALSE LOOP=TRUE LOOP=FALSE 
  628. LOOP=PALINDROME PLAYEVERYFRAME=TRUE PLAYEVERYFRAME=FALSE}
  629. ensureset htmlElemAttrUsed([list QUICKTIME MOVIE]) {SRC= WIDTH= HEIGHT= HIDDEN= AUTOPLAY= CONTROLLER= LOOP= 
  630. PLAYEVERYFRAME=}
  631.  
  632. set htmlElemAttrRequired1([list QUICKTIME VR])    {SRC= WIDTH= HEIGHT=}
  633. set htmlElemAttrOptional1([list QUICKTIME VR])    {HSPACE= VSPACE= ALIGN= PAN= TILT= FOV=
  634. NODE= CORRECTION= PLUGINSPAGE=}
  635. set htmlElemAttrNumber1([list QUICKTIME VR]) {WIDTH=1:i:n HEIGHT=1:i:n 
  636. HSPACE=1:i:n VSPACE=1:i:n PAN=0:360:n TILT=-360:360:n FOV=-360:360:n NODE=0:i:n}
  637. set htmlElemAttrChoices1([list QUICKTIME VR])    {ALIGN=TOP ALIGN=MIDDLE ALIGN=BOTTOM 
  638. ALIGN=LEFT ALIGN=RIGHT
  639. CORRECTION=NONE CORRECTION=PARTIAL CORRECTION=FULL}
  640. ensureset htmlElemAttrUsed([list QUICKTIME VR]) {SRC= WIDTH= HEIGHT= PAN= TILT= FOV=
  641. NODE= CORRECTION=}
  642.  
  643. set htmlElemAttrRequired1(REALAUDIO)    {SRC= WIDTH= HEIGHT=}
  644. set htmlElemAttrOptional1(REALAUDIO)    {HSPACE= VSPACE= ALIGN= CONTROLS= AUTOSTART=
  645. NOLABELS= CONSOLE=}
  646. set htmlElemAttrNumber1(REALAUDIO) {WIDTH=1:i:n HEIGHT=1:i:n HSPACE=1:i:n VSPACE=1:i:n}
  647. set htmlElemAttrChoices1(REALAUDIO)    {ALIGN=TOP ALIGN=MIDDLE ALIGN=BOTTOM 
  648. ALIGN=LEFT ALIGN=RIGHT
  649. CONTROLS=ALL CONTROLS=CONTROLPANEL CONTROLS=INFOVOLUMEPANEL CONTROLS=INFOPANEL
  650. CONTROLS=STATUSBAR CONTROLS=PLAYBUTTON CONTROLS=STOPBUTTON CONTROLS=VOLUMESLIDER
  651. CONTROLS=POSITIONSLIDER CONTROLS=POSITIONFIELD CONTROLS=STATUSFIELD
  652. AUTOSTART=TRUE AUTOSTART=FALSE NOLABELS=TRUE NOLABELS=FALSE}
  653. ensureset htmlElemAttrUsed(REALAUDIO) {SRC= WIDTH= HEIGHT= CONTROLS= AUTOSTART=
  654. NOLABELS= CONSOLE=}
  655.  
  656. # ILAYER
  657. set htmlElemAttrOptional1(ILAYER) {LEFT= TOP= PAGEX= PAGEY= NAME= SRC= WIDTH= HEIGHT= CLIP= Z-INDEX=
  658. ABOVE= BELOW= VISIBILITY= BGCOLOR= BACKGROUND=}
  659. set htmlElemAttrChoices1(ILAYER) {VISIBILITY=SHOW VISIBILITY=HIDDEN VISIBILITY=INHERIT}
  660. set htmlElemAttrNumber1(ILAYER) {LEFT=-i:i:n TOP=-i:i:n PAGEX=0:i:n PAGEY=0:i:n WIDTH=1:i:%
  661. HEIGHT=1:i:% Z-INDEX=1:i:n}
  662. set htmlElemEventHandler1(ILAYER) {onLoad=}
  663. ensureset htmlElemAttrUsed(ILAYER) {LEFT= TOP= SRC= WIDTH= HEIGHT= VISIBILITY=}
  664.  
  665. # KEYGEN
  666. set htmlElemAttrRequired1(KEYGEN) {NAME=}
  667. set htmlElemAttrOptional1(KEYGEN) {CHALLENGE=}
  668. ensureset htmlElemAttrUsed(KEYGEN) {NAME=}
  669.  
  670. # LAYER
  671. set htmlElemAttrOptional1(LAYER) {LEFT= TOP= PAGEX= PAGEY= NAME= SRC= WIDTH= HEIGHT= CLIP= Z-INDEX=
  672. ABOVE= BELOW= VISIBILITY= BGCOLOR= BACKGROUND=}
  673. set htmlElemAttrChoices1(LAYER) {VISIBILITY=SHOW VISIBILITY=HIDDEN VISIBILITY=INHERIT}
  674. set htmlElemAttrNumber1(LAYER) {LEFT=-i:i:n TOP=-i:i:n PAGEX=0:i:n PAGEY=0:i:n WIDTH=1:i:%
  675. HEIGHT=1:i:% Z-INDEX=1:i:n}
  676. set htmlElemEventHandler1(LAYER) {onLoad=}
  677. ensureset htmlElemAttrUsed(LAYER) {LEFT= TOP= SRC= WIDTH= HEIGHT= VISIBILITY=}
  678.  
  679. # MARQUEE
  680. set htmlElemAttrOptional1(MARQUEE) {BEHAVIOR= DIRECTION= ALIGN= LOOP= WIDTH= HEIGHT=
  681. HSPACE= VSPACE= BGCOLOR= SCROLLAMOUNT= SCROLLDELAY=}
  682. set htmlElemAttrNumber1(MARQUEE) {LOOP=-1:i:n HEIGHT=1:i:% WIDTH=1:i:% HSPACE=0:i:n
  683. VSPACE=0:i:n SCROLLAMOUNT=1:i:n SCROLLDELAY=1:i:n}
  684. set htmlElemAttrChoices1(MARQUEE) {BEHAVIOR=SLIDE BEHAVIOR=ALTERNATE BEHAVIOR=SCROLL
  685. DIRECTION=RIGHT DIRECTION=LEFT ALIGN=TOP ALIGN=MIDDLE ALIGN=BOTTOM}
  686. ensureset htmlElemAttrUsed(MARQUEE) {BEHAVIOR= DIRECTION= LOOP=}
  687.  
  688. # MULTICOL
  689. set htmlElemAttrRequired1(MULTICOL)    {COLS=}
  690. set htmlElemAttrOptional1(MULTICOL)    {GUTTER= WIDTH=}
  691. set htmlElemAttrNumber1(MULTICOL)    {COLS=2:i:n GUTTER=0:i:n WIDTH=1:i:%}
  692. ensureset htmlElemAttrUsed(MULTICOL) {COLS= GUTTER= WIDTH=}
  693.  
  694. # NOBR
  695. set htmlElemAttrOptional1(NOBR) {}
  696.  
  697. # NOEMBED
  698. set htmlElemAttrOptional1(NOEMBED) {}
  699.  
  700. # NOLAYER
  701. set htmlElemAttrOptional1(NOLAYER) {}
  702.  
  703. # SERVER
  704. set htmlElemAttrOptional1(SERVER) {}
  705.  
  706. # SPACER
  707. set htmlElemAttrRequired1(SPACER)    {TYPE=}
  708. set htmlElemAttrOptional1(SPACER)    {SIZE= WIDTH= HEIGHT= ALIGN=}
  709. set htmlElemAttrNumber1(SPACER)    {SIZE=1:i:n WIDTH=1:i:% HEIGHT=1:i:%}
  710. set htmlElemAttrChoices1(SPACER) {TYPE=HORIZONTAL TYPE=VERTICAL TYPE=BLOCK ALIGN=TOP 
  711. ALIGN=MIDDLE ALIGN=BOTTOM ALIGN=LEFT ALIGN=RIGHT}
  712. ensureset htmlElemAttrUsed(SPACER) {TYPE= SIZE= WIDTH= HEIGHT= ALIGN=}
  713.  
  714. # WBR
  715. set htmlElemAttrOptional1(WBR)     {}
  716.  
  717.  
  718. # Add attrs CLASS, ID, STYLE, TITLE.
  719. # All except {BASE BASEFONT HEAD HTML
  720. # META PARAM SCRIPT STYLE TITLE WBR BGSOUND KEYGEN SERVER}
  721. foreach tmp {TABLE LABEL NOBR SMALL BLOCKQUOTE A TBODY SUB SPAN B TFOOT FORM IFRAME TR 
  722. COL LIVEVIDEO {INPUT TYPE=FILE} TT DFN UL I {INPUT TYPE=SUBMIT} LAYER TEXTAREA LINK 
  723. BLINK SUP P OPTGROUP FIELDSET MULTICOL VAR Q KBD ACRONYM CENTER NOEMBED OL FRAME ISINDEX 
  724. U BDO IMG APPLET LEGEND OPTION HR {INPUT TYPE=TEXT} CITE REALAUDIO ABBR FRAMESET 
  725. SELECT NOLAYER LIVEAUDIO STRIKE {INPUT TYPE=IMAGE} BR BUTTON STRONG SPACER OBJECT DIR FONT 
  726. DD NOSCRIPT INS {INPUT TYPE=PASSWORD} {INPUT TYPE=HIDDEN} COLGROUP DIV MENU {INPUT TYPE=RADIO} 
  727. ADDRESS BODY CAPTION DL SAMP {INPUT TYPE=RESET} CODE {QUICKTIME MOVIE} S {LI IN UL} MAP PRE 
  728. MARQUEE TD DT AREA H1 BIG EM H2 NOFRAMES {INPUT TYPE=BUTTON} H3 {QUICKTIME VR} TH H4 EMBED 
  729. DEL H5 ILAYER THEAD H6 {INPUT TYPE=CHECKBOX} {LI IN OL}} {
  730.     lappend htmlElemAttrOptional1($tmp) CLASS= ID= STYLE= TITLE=
  731. }
  732.  
  733. # Add attrs LANG, DIR.
  734. # All except {APPLET BASE BASEFONT BDO BR FRAME FRAMESET IFRAME
  735. # PARAM SCRIPT WBR BGSOUND KEYGEN SERVER}
  736. foreach tmp {TABLE LABEL NOBR STYLE SMALL BLOCKQUOTE A TBODY SUB SPAN B TFOOT FORM TR COL HR 
  737. LIVEVIDEO {INPUT TYPE=FILE} TT DFN UL I {INPUT TYPE=SUBMIT} LAYER TEXTAREA LINK META BLINK 
  738. SUP P OPTGROUP FIELDSET MULTICOL VAR Q KBD ACRONYM CENTER NOEMBED OL ISINDEX U IMG LEGEND 
  739. OPTION {INPUT TYPE=TEXT} CITE HTML REALAUDIO ABBR SELECT NOLAYER LIVEAUDIO STRIKE 
  740. {INPUT TYPE=IMAGE} BUTTON STRONG SPACER OBJECT DIR FONT DD NOSCRIPT INS {INPUT TYPE=PASSWORD} 
  741. HEAD {INPUT TYPE=HIDDEN} COLGROUP DIV MENU {INPUT TYPE=RADIO} ADDRESS BODY CAPTION DL SAMP 
  742. {INPUT TYPE=RESET} CODE {QUICKTIME MOVIE} S {LI IN UL} MAP PRE MARQUEE TD DT AREA H1 TITLE 
  743. BIG EM H2 NOFRAMES {INPUT TYPE=BUTTON} H3 {QUICKTIME VR} TH H4 EMBED DEL H5 ILAYER THEAD H6 
  744. {INPUT TYPE=CHECKBOX} {LI IN OL}} {
  745.     lappend htmlElemAttrOptional1($tmp) LANG= DIR=
  746.     lappend htmlElemAttrChoices1($tmp) DIR=LTR DIR=RTL
  747. }
  748.  
  749. # Add event handlers
  750. # All except {APPLET BASE BASEFONT BDO BR FONT FRAME FRAMESET HEAD HTML
  751. # IFRAME ISINDEX META PARAM SCRIPT STYLE TITLE WBR BGSOUND KEYGEN SERVER}
  752. foreach tmp {TABLE LABEL NOBR SMALL BLOCKQUOTE A TBODY SUB SPAN B TFOOT FORM TR COL 
  753. LIVEVIDEO {INPUT TYPE=FILE} TT DFN UL I {INPUT TYPE=SUBMIT} LAYER TEXTAREA LINK BLINK 
  754. SUP P OPTGROUP FIELDSET MULTICOL VAR Q KBD ACRONYM CENTER NOEMBED OL U IMG LEGEND OPTION 
  755. HR {INPUT TYPE=TEXT} CITE REALAUDIO ABBR SELECT NOLAYER LIVEAUDIO STRIKE 
  756. {INPUT TYPE=IMAGE} BUTTON STRONG SPACER OBJECT DIR DD NOSCRIPT INS {INPUT TYPE=PASSWORD} 
  757. {INPUT TYPE=HIDDEN} COLGROUP DIV MENU {INPUT TYPE=RADIO} ADDRESS BODY CAPTION DL SAMP 
  758. {INPUT TYPE=RESET} CODE {QUICKTIME MOVIE} S {LI IN UL} MAP PRE MARQUEE TD DT AREA H1 
  759. BIG EM H2 NOFRAMES {INPUT TYPE=BUTTON} H3 {QUICKTIME VR} TH H4 EMBED DEL H5 ILAYER THEAD 
  760. H6 {INPUT TYPE=CHECKBOX} {LI IN OL}} {
  761.     lappend htmlElemEventHandler1($tmp) onClick= onDblClick= onMouseDown= onMouseUp= onMouseOver= \
  762.       onMouseMove= onMouseOut= onKeyPress= onKeyDown= onKeyUp=
  763. }
  764.  
  765. unset tmp
  766.  
  767. proc htmlCheckConfig {} {
  768.     
  769.     upvar mayContain mayContain empty empty closingOptional closingOptional
  770.     
  771.     set headmisc {SCRIPT STYLE META LINK OBJECT}
  772.     set headContent {TITLE ISINDEX BASE}
  773.     set heading {H1 H2 H3 H4 H5 H6}
  774.     set lists {UL OL DIR MENU}
  775.     set preformatted {PRE}
  776.     set fontstyle {TT I B U S STRIKE BIG SMALL}
  777.     set phrase {EM STRONG DFN CODE SAMP KBD VAR CITE ABBR ACRONYM}
  778.     set special {A IMG APPLET OBJECT FONT BASEFONT BR SCRIPT MAP Q SUB SUP SPAN BDO IFRAME}
  779.     set formctrl {INPUT SELECT TEXTAREA LABEL BUTTON}
  780.     set inline [concat text $fontstyle $phrase $special $formctrl]
  781.     set block [concat P $heading $lists $preformatted DL DIV CENTER NOSCRIPT NOFRAMES BLOCKQUOTE FORM ISINDEX HR TABLE FIELDSET ADDRESS]
  782.     set flow [concat $inline $block]
  783.     
  784.     # Empty elements
  785.     set empty {BASEFONT BR AREA LINK IMG PARAM HR INPUT COL FRAME ISINDEX BASE META}
  786.     
  787.     # Define what each element mayContain contain
  788.     foreach i [concat $fontstyle $phrase $heading SUB SUP SPAN BDO FONT A P PRE Q DT LABEL LEGEND CAPTION] {
  789.         set mayContain($i) $inline
  790.     }
  791.     foreach i {DIV CENTER BLOCKQUOTE INS DEL DD LI FORM BUTTON TH TD IFRAME NOSCRIPT} {
  792.         set mayContain($i) $flow
  793.     }
  794.     
  795.     set mayContain(A) [lreplace $mayContain(A) [set where [lsearch -exact $mayContain(A) A]] $where]
  796.     set mayContain(FORM) [lreplace $mayContain(FORM) [set where [lsearch -exact $mayContain(FORM) FORM]] $where]
  797.     set mayContain(LABEL) [lreplace $mayContain(LABEL) [set where [lsearch -exact $mayContain(LABEL) LABEL]] $where]
  798.     
  799.     regsub -all {IMG|OBJECT|APPLET|BIG|SMALL|SUB|SUP|FONT|BASEFONT} $mayContain(PRE) "" mayContain(PRE)
  800.     regsub -all "[join $formctrl |]|FORM|ISINDEX|FIELDSET|IFRAME" " $mayContain(BUTTON)" " " mayContain(BUTTON)
  801.     set mayContain(BUTTON) [lreplace $mayContain(BUTTON) [set where [lsearch -exact $mayContain(BUTTON) A]] $where]
  802.     
  803.     foreach i $lists {
  804.         set mayContain($i) LI
  805.     }
  806.     set mayContain(BODY) [concat $flow INS DEL]
  807.     set mayContain(ADDRESS) [concat $inline P]
  808.     set mayContain(MAP) [concat $block AREA]
  809.     set mayContain(OBJECT) [concat $flow PARAM]
  810.     set mayContain(APPLET) [concat $flow PARAM]
  811.     set mayContain(DL) {DT DD}
  812.     set mayContain(SELECT) {OPTGROUP OPTION}
  813.     set mayContain(OPTGROUP) OPTION
  814.     set mayContain(OPTION) text
  815.     set mayContain(TEXTAREA) text
  816.     set mayContain(FIELDSET) [concat $flow LEGEND]
  817.     set mayContain(TABLE) {CAPTION COL COLGROUP THEAD TBODY TFOOT}
  818.     set mayContain(TBODY) TR
  819.     set mayContain(THEAD) TR
  820.     set mayContain(TFOOT) TR
  821.     set mayContain(COLGROUP) COL
  822.     set mayContain(TR) {TD TH}
  823.     set mayContain(FRAMESET) {FRAMESET FRAME NOFRAMES}
  824.     set mayContain(NOFRAMES) [concat BODY $flow]
  825.     set mayContain(NOFRAMES) [lreplace $mayContain(NOFRAMES) [set where [lsearch -exact $mayContain(NOFRAMES) NOFRAMES]] $where]
  826.     set mayContain(HEAD) [concat $headContent $headmisc]
  827.     set mayContain(TITLE) text
  828.     set mayContain(STYLE) text
  829.     set mayContain(SCRIPT) text
  830.     set mayContain(HTML) {HEAD FRAMESET BODY}
  831.  
  832.     # Dummy tag to start with.
  833.     set mayContain(WINDOW) HTML
  834.     
  835.     # These have an optional closing tag.
  836.     set closingOptional {P DT DD LI OPTION THEAD TBODY TFOOT COLGROUP TR TD TH HEAD BODY HTML WINDOW}
  837. }
  838.